package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import model.Factura;
import model.ItemFactura;

public class AdministradorPersistenciaFactura extends AdministradorPersistencia {

	
	private static AdministradorPersistenciaFactura instancia;
	private String queryInsert = "insert into facturas (dniCliente,total,estado) values (?,?,'ACTIVO')";
	private String queryInsertItems = "insert into itemFacturas (nroFactura,codigoProducto,cantidad,subtotal) values (?,?,?,?)";
	
	private AdministradorPersistenciaFactura(){

	}
	
	public static AdministradorPersistenciaFactura getInstancia(){
		if (instancia == null){
			instancia = new AdministradorPersistenciaFactura();
		}
		return instancia;
	}

	public void insertarFactura(Factura nueva) throws Exception {
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(queryInsert,Statement.RETURN_GENERATED_KEYS);
		ps.setInt(1, nueva.getCliente().getDni());
		ps.setFloat(2, nueva.getTotal());
		int codigoFactura = 0;
		int rc = ps.executeUpdate();
		if (rc > 0){
			ResultSet key = ps.getGeneratedKeys();
			if (key.next()){
				codigoFactura = key.getInt(1);
			}
			for (ItemFactura item : nueva.getItemsFactura()){
				int codigoProducto = item.getProducto().getCodigo();
				ps = con.prepareStatement(queryInsertItems);
				ps.setInt(1, codigoFactura);
				ps.setInt(2, codigoProducto);
				ps.setInt(3, item.getCantidad());
				ps.setFloat(4, item.getSubtotal());
				ps.execute();
			}
		}
		con.close();
	}
	
	
}
